#include "Nourriture.h"

void Nourriture_amorcer(){}

void Nourriture_init(t_motte** pMotte, int elmax, int ecmax, int eTour){
	// Initialise la nourriture en fonction du nombre de tour et de la taille de la matrice
	int eNbNourriture;
	int eTypeNourriture;
	int eNourriture;
	int eLigne, eColonne;

	te_Nourriture Nourriture;

	eNbNourriture=eNourritureCalcul(pMotte,elmax,ecmax,eTour);

	for(eNourriture=0;eNourriture<eNbNourriture;eNourriture++){
		Nourriture= NourritureHasard();
		eLigne= eHasard(1,elmax-1);
		eColonne= eHasard(1,ecmax-1);
		while(btest_MotteNourriture(pMotte,eLigne,eColonne)){
			eLigne= eHasard(1,elmax-1);
			eColonne= eHasard(1,ecmax-1);
		}
		pMotte[eLigne][eColonne].Nourriture=Nourriture;
		pMotte[eLigne][eColonne].ptNourriture=100;
	}
}

te_Nourriture NourritureHasard (){
	//Retourne un type de nourriture au hasard
	int eTypeNourriture;
	te_Nourriture Nourriture;

	eTypeNourriture = eHasard(0,2);

	switch (eTypeNourriture) {
		case 0 : Nourriture=Ver; break;
		case 1 : Nourriture=Plante; break;
	}

	return Nourriture;
}

int btest_MotteNourriture (t_motte** pMotte, int eLigne, int eColonne){
	//Test retournant un boolean indiquant si les coordonnées indiquées tombent sur un rattaupe ou sur une motte vide
	return (pMotte[eLigne][eColonne].Nourriture>0&&pMotte[eLigne][eColonne].eTaupes>0&&pMotte[eLigne][eColonne].eEtatterre==Rien);
}

int eNourritureCalcul (t_motte** pMotte, int elmax, int ecmax, int eTour){
	//Retourne le nombre de nourriture insérée en fonction de la taille de la matrice et du nombre de tour
	int eNbNourriture, eNbNourritureMin, eNbNourritureMax;
	int eNbcase;

	eNbcase= epMottenonvide (pMotte, elmax, ecmax);
	if(eTour>=0&&eTour<=5){
		eNbNourritureMin = (eNbcase*60)/100;
		eNbNourritureMax = (eNbcase*80)/100;
	}
	else if(eTour>5&&eTour<=10){
		eNbNourritureMin = (eNbcase*40)/100;
		eNbNourritureMax = (eNbcase*60)/100;
	}
	else if(eTour>10&&eTour<=15){
		eNbNourritureMin = (eNbcase*30)/100;
		eNbNourritureMax = (eNbcase*40)/100;
	}
	else {
		eNbNourritureMin = (eNbcase*10)/100;
		eNbNourritureMax = (eNbcase*20)/100;
	}
	eNbNourriture = eHasard(eNbNourritureMin,eNbNourritureMax);
	return eNbNourriture;
}
